package co.edu.usbcali.hibernate.managebean;

import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;


import co.edu.usbcali.hibernate.logica.IVacunaLogica;
import co.edu.usbcali.hibernate.logica.VacunaLogica;

import co.edu.usbcali.hibernate.modelo.Vacunas;
import co.edu.usbcali.hibernate.utilidades.FacesUtils;
import co.edu.usbcali.hibernate.utilidades.Utilities;

import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlOutputText;

public class VacunaView {

private HtmlOutputText lblCodigo;
private HtmlInputText txtCodigo;
private HtmlOutputText lblNombre;
private HtmlInputText txtNombre;
private HtmlCommandButton btnGuardar;
private HtmlCommandButton btnModificar;
private HtmlCommandButton btnLimpiar;
private HtmlCommandButton btnEliminar;
private HtmlCommandButton btnSalir;
private HtmlCommandButton btnConsultar;
private HtmlCommandButton btnAceptar;
private boolean pnuVisible = false;
public HtmlOutputText getLblCodigo() {
	return lblCodigo;
}
public void setLblCodigo(HtmlOutputText lblCodigo) {
	this.lblCodigo = lblCodigo;
}
public HtmlInputText getTxtCodigo() {
	return txtCodigo;
}
public void setTxtCodigo(HtmlInputText txtCodigo) {
	this.txtCodigo = txtCodigo;
}
public HtmlOutputText getLblNombre() {
	return lblNombre;
}
public void setLblNombre(HtmlOutputText lblNombre) {
	this.lblNombre = lblNombre;
}
public HtmlInputText getTxtNombre() {
	return txtNombre;
}
public void setTxtNombre(HtmlInputText txtNombre) {
	this.txtNombre = txtNombre;
}
public HtmlCommandButton getBtnGuardar() {
	return btnGuardar;
}
public void setBtnGuardar(HtmlCommandButton btnGuardar) {
	this.btnGuardar = btnGuardar;
}
public HtmlCommandButton getBtnModificar() {
	return btnModificar;
}
public void setBtnModificar(HtmlCommandButton btnModificar) {
	this.btnModificar = btnModificar;
}
public HtmlCommandButton getBtnLimpiar() {
	return btnLimpiar;
}
public void setBtnLimpiar(HtmlCommandButton btnLimpiar) {
	this.btnLimpiar = btnLimpiar;
}
public HtmlCommandButton getBtnEliminar() {
	return btnEliminar;
}
public void setBtnEliminar(HtmlCommandButton btnEliminar) {
	this.btnEliminar = btnEliminar;
}
public HtmlCommandButton getBtnSalir() {
	return btnSalir;
}
public void setBtnSalir(HtmlCommandButton btnSalir) {
	this.btnSalir = btnSalir;
}
public HtmlCommandButton getBtnConsultar() {
	return btnConsultar;
}
public void setBtnConsultar(HtmlCommandButton btnConsultar) {
	this.btnConsultar = btnConsultar;
}
public HtmlCommandButton getBtnAceptar() {
	return btnAceptar;
}
public void setBtnAceptar(HtmlCommandButton btnAceptar) {
	this.btnAceptar = btnAceptar;
}
public boolean isPnuVisible() {
	return pnuVisible;
}
public void setPnuVisible(boolean pnuVisible) {
	this.pnuVisible = pnuVisible;
}

public void limpiar_action(ActionEvent e) {
	txtCodigo.setValue("");
	txtNombre.setValue("");
	txtCodigo.setDisabled(false);
	btnGuardar.setDisabled(false);
    btnEliminar.setDisabled(true);
    btnModificar.setDisabled(true);
    btnLimpiar.setDisabled(false);

}

public void guardar_action(ActionEvent e) throws Exception {

	try {
		if (!Utilities.isNumeric(txtCodigo.getValue().toString())){
			throw new Exception("El codigo debe ser numerico");
		}
		Long vacCodigo=Long.parseLong(txtCodigo.getValue().toString());
		String vacNombre = txtNombre.getValue().toString();
		
		IVacunaLogica vacunaLogica = new VacunaLogica();
		vacunaLogica.crearVacuna(vacCodigo, vacNombre);
		txtCodigo.setValue("");
		txtNombre.setValue("");
		txtCodigo.setDisabled(false);
		btnGuardar.setDisabled(false);
        btnEliminar.setDisabled(true);
        btnModificar.setDisabled(true);
        btnLimpiar.setDisabled(false);
	} catch (Exception e2) {
		
		FacesUtils.addErrorMessage(e2.getMessage());
		pnuVisible = true;
	}

}

public void modificar_action(ActionEvent e) throws Exception {
	
	try {
		Long vacCodigo=new Long(0);
		if (Utilities.isNumeric(txtCodigo.getValue().toString())){
			vacCodigo = Long.parseLong(txtCodigo.getValue().toString());
		}else {
			throw new Exception("La codigo debe ser numerico");
		}
		String vacNombre = txtNombre.getValue().toString();
		
		IVacunaLogica vacunaLogica = new VacunaLogica();
		vacunaLogica.modificarVacuna(vacCodigo, vacNombre);
		txtCodigo.setValue("");
		txtNombre.setValue("");
		txtCodigo.setDisabled(false);
		btnGuardar.setDisabled(false);
        btnEliminar.setDisabled(true);
        btnModificar.setDisabled(true);
        btnLimpiar.setDisabled(false);
	} catch (Exception e2) {
		FacesUtils.addErrorMessage(e2.getMessage());
		pnuVisible = true;
	}
}

public void eliminar_action(ActionEvent e) throws Exception {
	
	try {
		
		if (!Utilities.isNumeric(txtCodigo.getValue().toString())){
			throw new Exception("La cedula debe ser numerica");
		}
		Long vacCodigo=Long.parseLong(txtCodigo.getValue().toString());
		String vacNombre = txtNombre.getValue().toString();
		IVacunaLogica vacunaLogica = new VacunaLogica();
		vacunaLogica.borrarVacuna(vacCodigo, vacNombre);
		
		txtCodigo.setValue("");
		txtNombre.setValue("");
		txtCodigo.setDisabled(false);
		btnGuardar.setDisabled(false);
        btnEliminar.setDisabled(true);
        btnModificar.setDisabled(true);
        btnLimpiar.setDisabled(false);
		
	} catch (Exception e2) {
		FacesUtils.addErrorMessage(e2.getMessage());
		pnuVisible = true;
	}
	
}

public String salir_action() throws Exception {
	return "menu";
}

public void aceptar_action(ActionEvent e) throws Exception {
	pnuVisible = false;
}

public void listener_txtCod(ValueChangeEvent event){
	 if ((event.getNewValue() != null) && !event.getNewValue().equals("")) {
            Vacunas entity = null;

            try {
            	if (!Utilities.isNumeric(txtCodigo.getValue().toString())){
    				throw new Exception("El codigo debe ser numerico");
    			}
    			Long vacCodigo=Long.parseLong(txtCodigo.getValue().toString());
    			IVacunaLogica vacunaLogica = new VacunaLogica();
    			entity = vacunaLogica.consultarVacunaPorId(vacCodigo);
                
            } catch (Exception e) {
            	FacesUtils.addErrorMessage(e.getMessage());
    			pnuVisible = true;
            }

            if (entity == null) {
                btnGuardar.setDisabled(false);
                btnEliminar.setDisabled(true);
                btnModificar.setDisabled(true);
                btnLimpiar.setDisabled(false);
            } else {
                txtNombre.setValue(entity.getVacNombre());
                txtNombre.setDisabled(false);
                
                txtCodigo.setDisabled(true);
                btnGuardar.setDisabled(true);
                btnEliminar.setDisabled(false);
                btnModificar.setDisabled(false);
                btnLimpiar.setDisabled(false);
            }
        }
}

}
